"use strict";
define(["jquery", "bootstrap", "backend", "table", "form"], function($, e, Backend, Table, Form) {
    var Controller = {
        index: function() {
            // 绑定表单验证
            Controller.api.bindevent();

            // 监听保证金表单提交事件（阻止默认提交行为）
            $('#margin-form').on('submit', function(e) {
                e.preventDefault();
                // 只处理保证金标签页的提交
                if ($('#margin').hasClass('active')) {
                    Controller.generatePaymentQRCode();
                } else {
                    // 其他标签页保持原有提交逻辑
                    $(this).ajaxSubmit({
                        success: function(data) {
                            // 原有成功处理逻辑
                        }
                    });
                }
            });

            // 监听标签页切换事件
            $('a[data-toggle="tab"]').on('shown.bs.tab', function(e) {
                var target = $(e.target).attr("href");
                if (target === '#margin') {
                    // 重置表单状态
                    $('#margin-form')[0].reset();
                    $('#qrcode-container').hide();
                    $('#payment-success').hide();
                    $('#payment-status').text('请填写备注并提交生成支付二维码').css('color', 'inherit');
                }
            });
        },

        // 生成支付二维码
        generatePaymentQRCode: function() {
            var form = $('#margin-form');
            // var remark = form.find('input[name="row[remark]"]').val();

            // 验证备注是否填写
            // if (!remark) {
            //     $('#payment-status').text('请填写备注信息').css('color', 'red');
            //     return false;
            // }
            // 显示加载状态
            $('#payment-status').text('正在生成支付二维码...').css('color', 'inherit');
            $('#qrcode-container').hide();
            $('#payment-success').hide();

            // 禁用提交按钮
            form.find('button[type="submit"]').prop('disabled', true);

            // 请求生成二维码接口（注意：这里使用单独的接口，不提交到config）
            $.ajax({
                url: Backend.api.fixurl("wanlshop.config/generatePaymentQRCode"),
                type: 'POST',
                data: {
                    // remark: remark,
                    // 添加必要的token等参数
                    __token__: form.find('input[name="__token__"]').val()
                },
                dataType: 'json',
                success: function(response) {
                    if (response.code === 1) {
                        if(!response.data.jump){
                            // 显示二维码
                            $('#payment-qrcode').attr('src', response.data.url);
                            $('#qrcode-container').show();
                            $('#payment-status').text('请扫描二维码完成支付').css('color', 'inherit');

                            // 开始轮询支付状态
                            Controller.checkPaymentStatus(response.data.order_id);
                        }else{
                            Layer.confirm('需要跳转到银行链接', {
                                title: '立即前往',
                                btn: ['确认', '取消'],
                                icon: 1
                            }, (index) => {
                                window.location.href = response.data.jump;
                            }, (index) => {
                                Layer.close(index);
                                window.location.reload();
                            });

                        }

                    } else {
                        $('#payment-status').text(response.msg || '生成二维码失败').css('color', 'red');
                    }
                },
                error: function() {
                    $('#payment-status').text('请求失败，请重试').css('color', 'red');
                },
                complete: function() {
                    // 启用提交按钮
                    form.find('button[type="submit"]').prop('disabled', false);
                }
            });
        },

        // 检查支付状态
        checkPaymentStatus: function(orderId) {
            // 清除之前的轮询
            if (Controller.pollingInterval) {
                clearInterval(Controller.pollingInterval);
            }
            // 显示加载中的提示（避免重复创建）
            let loadingMsg = Layer.msg('支付处理中...', {
                icon: 16,
                shade: 0.3,
                time: 0
            });
            // 设置新的轮询
            Controller.pollingInterval =  setInterval(() => {
                $.ajax({
                    url: Backend.api.fixurl("wanlshop.config/checkPaymentStatus"),
                    type: 'GET',
                    data: {order_id: orderId},
                    dataType: 'json',
                    success: (response) => {
                        if (response.code === 1) {
                            switch(response.data.code) {
                                case 1: // 支付成功
                                    clearInterval(this.pollingInterval);
                                    Layer.close(loadingMsg);
                                    // window.location.reload();
                                    // 弹出确认框
                                    Layer.confirm('支付成功', {
                                        title: '支付成功',
                                        btn: ['确认', '取消'],
                                        icon: 1
                                    }, (index) => {
                                        Layer.close(index);
                                        window.location.reload();
                                    }, (index) => {
                                        Layer.close(index);
                                        window.location.reload();
                                    });
                                    break;

                                case 2: // 处理中
                                    // 保持加载提示
                                    break;

                                default: // 其他状态
                                    clearInterval(this.pollingInterval);
                                    Layer.close(loadingMsg);
                                    Toastr.warning(response.msg || '支付状态异常');
                            }
                        } else {
                            clearInterval(this.pollingInterval);
                            Layer.close(loadingMsg);
                            Toastr.error(response.msg || '请求支付状态失败');
                        }
                    },
                    error: (xhr) => {
                        clearInterval(this.pollingInterval);
                        Layer.close(loadingMsg);
                        Toastr.error('网络错误，请检查网络连接');
                    }
                });
            }, 3000); // 每3秒检查一次
        },

        api: {
            bindevent: function() {
                // 只绑定非保证金表单的验证
                $("form[role=form]:not(#margin-form)").each(function() {
                    Form.api.bindevent($(this));
                });
            }
        }
    };

    return Controller;
});
